/**
 * by ward @ harrydeep@163.com 
 * 2018
 */
package com.qinhailin.common.util;

import java.sql.Timestamp;
import java.text.SimpleDateFormat;
import java.util.Date;

/**
 * @author ward
 * 用途:
 * 版本:
 * 创建:
 * 更新: V2 / 2019年2月16日 
 */
public final class DateUtil {
	
	/** yyyy-MM-dd HH:mm **/
	public static final String SHORT = "yyyy-MM-dd HH:mm";
	/** yyyy/MM/dd HH:mm **/
	public static final String SHORT2 = "yyyy/MM/dd HH:mm";
	/** yyyy-MM-dd HH:mm:ss **/
	public static final String MIDDLE = "yyyy-MM-dd HH:mm:ss";
	/** yyyy-MM-dd HH:mm:ss.SSS **/
	public static final String FULL = "yyyy-MM-dd HH:mm:ss.SSS";
	/** yyyy-MM-dd HH:mm:ss.SSS EEEE **/
	public static final String FULL2 = "yyyy-MM-dd HH:mm:ss.SSS EEEE";
	/** 默认格式 **/
	private static final SimpleDateFormat  format = new SimpleDateFormat(MIDDLE);
	
	/** 获取当前时间 **/
	public static Timestamp getCurrentTimestamp(){
		// return new Timestamp(new Date().getTime());
		// return new Timestamp(Calendar.getInstance().getTimeInMillis());
		return new Timestamp(System.currentTimeMillis());
	}
	
	
	
	/** 格式化指定时间, 以默认格式yyyy-MM-dd HH:mm:ss. 如果参数有空值则返回零长度字符串 **/
	public static String format(Timestamp time){
		return time != null ? format.format(time) : "";
	}
	
	/** 格式化指定时间, 以指定格式. 如果参数有空值则返回零长度字符串 **/
	public static String format(Timestamp time, String pattern){
		return time != null && pattern != null ? new SimpleDateFormat(pattern).format(time) : "";
	}
	
	/** 格式化指定时间, 以默认格式yyyy-MM-dd HH:mm:ss **/
	public static String format(Date date) {
		return date != null ? format.format(date) : "";
	}
	
	
	
	
	/** 格式化当前时间, 以默认格式yyyy-MM-dd HH:mm:ss. **/
	public static String formatNow(){
		return format.format(getCurrentTimestamp());
	}
	
	/** 格式化当前时间, 以指定格式. 如果参数有空值则返回零长度字符串**/
	public static String formatNow(String pattern){
		return pattern != null ? new SimpleDateFormat(pattern).format(getCurrentTimestamp()) : "";
	}
	
	/** 从字符串中解析时间出来.如果参数有空值则返回null **/
	public static Timestamp parse(String time){
		try{
			return Timestamp.valueOf(time);
		}catch(Exception e){
			return null;
		}
	}

	
}
